package com.bidevalution.business.service;

import com.bidevalution.business.context.UserRoleType;
import com.bidevalution.dao.entity.BeSectionInfo;
import com.bidevalution.support.exception.BizException;
import com.qtp.common.core.TSUser;
import com.qtp.core.model.Paging;
import com.qtp.core.model.Response;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 2020-04-02 胡一奇 bug 导光盘模式无法查看招标文件里的其他附件
 * 2020-04-07 whc ZTKP-3481 添加终止项目
 */
/**
 *
 * 2020-04-02 胡一奇 bug 导光盘模式无法查看招标文件里的其他附件
 */
public interface BeSectionInfoService {
    /**
     * 获取今日开标项目分页数据
     *
     * @param paramsMap
     * @return
     * @throws Exception
     */
    Paging<List<BeSectionInfo>> getBeSectionListPaging(Map<String, Object> paramsMap) throws Exception;

    List<BeSectionInfo> getLiveBeSectionList();

    List<BeSectionInfo> getLiveListByRoom(String roomName);

    List<BeSectionInfo> getChatSectionList();
  
    Paging<List<BeSectionInfo>> getAllList(Map<String, Object> paramsMap) throws Exception;

    /**
     * 根据id获取标段信息
     *
     * @param seqId
     * @return
     */
    BeSectionInfo getBeSectionInfoById(String seqId);

    UserRoleType getUserRoleType(String sectionId, TSUser loginUser, List<String> roleList) throws Exception;

    /**
     * 更新标段状态
     *
     * @param sectionId
     * @param sectionStage
     * @return
     * @throws Exception
     */
    Boolean updateSectionStage(String sectionId, String sectionStage) throws Exception;

    /**
     * 获取今日开标项目数据
     *
     * @return
     */
    List<BeSectionInfo> getTodaySectionList() throws Exception;

    /**
     * 获取招标代理今日评审项目列表
     *
     * @param paramsMap
     * @return
     * @throws Exception
     */
    List<BeSectionInfo> getAgentSectionList(Map<String, Object> paramsMap) throws Exception;

    /**
     * 获取专家权限下今日评审项目列表
     * @param loginName 专家登录名
     * @return
     * @throws Exception
     */
    List<BeSectionInfo> getExpertSectionList(String loginName) throws Exception;
    /**
     * 根据标段时间查询标段
     * @param @param startDate
     * @param @param endDate
     * @param @return 参数
     * @return List<BeSectionInfo> 返回类型
     * @throws
     */
    List<BeSectionInfo> getListByBidOpenTime(Date startDate,Date endDate);
    
    
    List<BeSectionInfo> getAllSectionList(String orgCode,String areaId,String sectionNam, String sectionCode);

    /**
     * 代理点击评审开始的更新操作
     *
     * @param sectionId
     * @throws Exception
     */
    Response<String> updateReviewStart(String sectionId) throws Exception;

    /**
     * 更新标评审状态
     *
     * @param sectionId
     * @throws Exception
     */
    boolean updateSectionInfoById(String sectionId, Integer status) throws Exception;
    
    BeSectionInfo selectByCode(String code);

    void deleteBySectionId(String sectionCode, String sectionId, String projectId);

    void deleteEnterprise(String sectionId, String enterpriseId);

    void backupBySectionId(String ids) throws IOException, Exception;

    /**
     * 获取有效单位数
     * @param sectionId
     * @return
     */
    long getValidUnitNum(String sectionId);
    //2020-04-02 胡一奇 bug 导光盘模式无法查看招标文件里的其他附件
    Response downloadZbPdfs(BeSectionInfo beSectionInfo) throws Exception;

    /**
     * 检查是否终止项目
     * @param sectionId
     * @throws BizException
     */
    void checkTermination(String sectionId) throws BizException;

    /**
     * 检查是否终止项目
     * @param sectionId
     * @throws BizException
     */
    void canNextStepByTermination(String sectionId, String sectionStepId) throws BizException;
    /**
     * 检查是否存在表决
     * @param sectionId
     * @throws BizException
     */
    void checkExistsVote(String sectionId) throws BizException;

    /**
     * 终止项目
     * @param sectionId
     * @return
     */
    int terminationSectionInfo(String sectionId);

    BeSectionInfo getSectionInfoByCodeAndName(String sectionCode, String sectionName);

    void terminationProd(String sectionId);
}
